package com.yang.config;

import com.yang.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 作者：星河滚烫
 * 时间：2021/1/2-14:43
 *
 * SpringMVC的配置类，配置拦截器、地址映射
 */
@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {
    //注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry)
    {
        //SpringBoot已经做好了静态资源映射，我们不用管静态资源映射的问题。
        /**
         * SpringBoot2.0 开始，自定义拦截器会默认拦截静态资源
         * 解决方案：
         *  一： 拦截的时候，用 "/*" 代替 "/**"
         *
         *  二、将静态资源排除掉。
         *      "/asserts/**","/webjars/**"
         */
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/*")
                .excludePathPatterns("/index.html","/","/user/login","/asserts/**","/webjars/**","/toAdminLoginPage",
                        "/toRegisterPage","/adminLogin","/register");
    }
    @Bean
    public WebMvcConfigurer webMvcConfigurer()
    {
        //使用内部类的方式，创建一个WebMvcConfigurer对象。
        WebMvcConfigurer webMvcConfigurer = new WebMvcConfigurer(){
            /**
             * 添加视图映射
             * @param registry
             */
            @Override
            public void addViewControllers(ViewControllerRegistry registry)
            {
                //将我们需要映射的页面与地址注册进来。
                registry.addViewController("/").setViewName("index");
                registry.addViewController("/index.html").setViewName("index");
                registry.addViewController("/userPage.html").setViewName("userPage");
            }


        };
        return webMvcConfigurer;
    }
}
